﻿namespace SSS.AlphaNN.Forms
{
    using System;
    using System.Threading;
    using System.Windows.Forms;

    using Components;
    using System.Collections.Generic;

    public partial class MainFormClassic
    {     
        /// <summary>
        /// Перечисление инструментов
        /// </summary>
        private enum Tools
        {
            /// <summary>
            /// кнопка Указатель нажата
            /// </summary>
            Pointer,

            /// <summary>
            /// нажата кнопка нейрон
            /// </summary>
            Neuron,

            /// <summary>
            /// нажата кнопка Связь
            /// </summary>
            Contact,

            /// <summary>
            /// Нажата кнопка Учитель
            /// </summary>
            Teacher,

            /// <summary>
            /// Нажата кнопка Источник
            /// </summary>
            DB,

            /// <summary>
            /// Нажата кнопка Приёмник
            /// </summary>
            FO
        }
        
        
        
        /// <summary>
        /// Делегат для работы с кнопками
        /// </summary>
        private delegate void ChangeEnabledRibbonButton();

        /// <summary>
        /// Рабочая область подлежащая замене на список рабочих областей
        /// </summary>
        private WorkGround wrkGround = new WorkGround();

        /// <summary>
        /// Нить для обработки сигнала с помощью нейронной сети (Модели нейронной сети)
        /// </summary>
        private Thread threadForRunNeuronNetwork;

        /// <summary>
        /// Нить для обучения нейронной сети (модели нейронной сети)
        /// </summary>
        private Thread threadForLearnNeuronNetwork;

        /// <summary>
        /// Список хранящий рабочие области
        /// </summary>
        private List<WorkGround> liWorkGround;
 
        /// <summary>
        /// 
        /// </summary>
        private Tools tool;

        /// <summary>
        /// Нить для анимации 
        /// </summary>
        private Thread animation;

        /// <summary>
        /// Группы нейронов для анимации
        /// </summary>
        private List<List<Neuron>> groupNeuronAnim;

        /// <summary>
        /// Делегат для анимации
        /// </summary>
        private delegate void ForAnimate();

        private int _countNeuronPage;

    }
}
